{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "60kkM4qXmOKL"
   },
   "source": [
    "## Train and Benchmark and Neural Decoder  with Viterbi Decoder.\n",
    "\n",
    "This notebook contains pipeline how to train a neural decoder model for decoding convolution code over AWGN Channel at 1/2-RSC signal.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "cyu1oMO5wIML"
   },
   "source": [
    "## Import required packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     }
    },
    "colab_type": "code",
    "id": "iCzr0Es9IfSf"
   },
   "outputs": [],
   "source": [
    "import multiprocessing as mp\n",
    "import time\n",
    "import numpy as np\n",
    "import commpy as cp\n",
    "import tensorflow as tf\n",
    "\n",
    "from deepcom.model import NRSCDecoder           # Neural Decoder Model\n",
    "from deepcom.metrics import BER, BLER           # metrics to benchmark Neural Decoder Model\n",
    "from deepcom.utils import corrupt_signal        # simulate a AWGN Channel\n",
    "\n",
    "from deepcom.dataset import create_dataset      # Create synthetic dataset\n",
    "from deepcom.dataset import data_genenerator    # data loader for Tensorflow\n",
    "\n",
    "import  matplotlib.pyplot  as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "IsrXsYa7lcb6"
   },
   "source": [
    "## Define Hyper-paramemeters for the experiment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     }
    },
    "colab_type": "code",
    "id": "X9VFHvkWlhW9"
   },
   "outputs": [],
   "source": [
    "# Number of training data\n",
    "BLOCK_LEN = 100\n",
    "NUM_TRAINING_DATA = 120000\n",
    "NUM_TESTING_DATA  = 10000\n",
    "\n",
    "# Communication Algo via Deep Learning (page 5, last paragraph)\n",
    "SNRs_test = np.linspace(0, 7.0, 8)\n",
    "SNR_train = 4.0\n",
    "\n",
    "\n",
    "# Network Architectures\n",
    "NUM_LAYERS = 2\n",
    "NUM_HIDDEN_UNITS = 400\n",
    "\n",
    "# Hyper-parameters for training\n",
    "BATCH_SIZE = 500       # depends on size of GPU, should be a factor of num_data\n",
    "LEARNING_RATE = 1e-3\n",
    "DROPOUT_RATE= 0.75\n",
    "\n",
    "\n",
    "CONSTRAINT_LEN = 3     # num of shifts in Conv. Encoder\n",
    "TRACE_BACK_DEPTH = 15  # (?) a parameter Viterbi Encoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "VBCUqBHQnru1"
   },
   "source": [
    "## Generate Synthetic Dataset for training/evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     },
     "base_uri": "https://localhost:8080/",
     "height": 85
    },
    "colab_type": "code",
    "executionInfo": {
     "elapsed": 22629,
     "status": "ok",
     "timestamp": 1529880113413,
     "user": {
      "displayName": "Dat Nguyen",
      "photoUrl": "//lh3.googleusercontent.com/-irIcNYd-KIw/AAAAAAAAAAI/AAAAAAAAAEs/NlM8kG6RL4Q/s50-c-k-no/photo.jpg",
      "userId": "108917076199533451784"
     },
     "user_tz": 420
    },
    "id": "uwbEp-ehnvT8",
    "outputId": "63d819f1-421e-46e8-ade9-9d1221a1556f"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Creating training data....\n",
      "Creating testing data....\n",
      "Number of training sequences 120000\n",
      "Number of testing sequences 10000\n"
     ]
    }
   ],
   "source": [
    "from commpy.channelcoding import Trellis\n",
    "#  Generator Matrix (octal representation)\n",
    "G = np.array([[0o7, 0o5]]) \n",
    "M = np.array([CONSTRAINT_LEN - 1])\n",
    "trellis = Trellis(M, G, feedback=0o7, code_type='rsc')\n",
    "\n",
    "# Create dataset \n",
    "print('Creating training data....')\n",
    "\n",
    "# X_train shape = [NUM_TRAINING_DATA, BLOCK_LENGTH, 2]\n",
    "# Y_train shape = [NUM_TRAINING_DATA, BLOCK_LENGTH, 1]\n",
    "X_train, Y_train = create_dataset(\n",
    "    NUM_TRAINING_DATA, \n",
    "    BLOCK_LEN, \n",
    "    trellis, SNR_train, seed=2018)\n",
    "\n",
    "print('Creating testing data....')\n",
    "# X_test shape = [NUM_TESTING_DATA, BLOCK_LENGTH, 2]\n",
    "# Y_test shape = [NUM_TESTING_DATA, BLOCK_LENGTH, 1]\n",
    "X_test, Y_test = create_dataset(\n",
    "    NUM_TESTING_DATA, \n",
    "    BLOCK_LEN, \n",
    "    trellis, snr=SNR_train, seed=1111)\n",
    "\n",
    "print('Number of training sequences {}'.format(len(X_train)))\n",
    "print('Number of testing sequences {}'.format(len(Y_test)))\n",
    "# print(X_train.shape, Y_train.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "2fUS4JyEvFVZ"
   },
   "source": [
    "## Define Neural Decoder Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     },
     "base_uri": "https://localhost:8080/",
     "height": 340
    },
    "colab_type": "code",
    "executionInfo": {
     "elapsed": 2518,
     "status": "ok",
     "timestamp": 1529880115957,
     "user": {
      "displayName": "Dat Nguyen",
      "photoUrl": "//lh3.googleusercontent.com/-irIcNYd-KIw/AAAAAAAAAAI/AAAAAAAAAEs/NlM8kG6RL4Q/s50-c-k-no/photo.jpg",
      "userId": "108917076199533451784"
     },
     "user_tz": 420
    },
    "id": "uqzVgS7IvH0r",
    "outputId": "f8746742-fc21-4897-a4af-6fd13b7860c4"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         (None, None, 2)           0         \n",
      "_________________________________________________________________\n",
      "bidirectional (Bidirectional (None, None, 800)         967200    \n",
      "_________________________________________________________________\n",
      "batch_normalization (BatchNo (None, None, 800)         3200      \n",
      "_________________________________________________________________\n",
      "bidirectional_1 (Bidirection (None, None, 800)         2882400   \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, None, 800)         3200      \n",
      "_________________________________________________________________\n",
      "time_distributed (TimeDistri (None, None, 1)           801       \n",
      "=================================================================\n",
      "Total params: 3,856,801\n",
      "Trainable params: 3,853,601\n",
      "Non-trainable params: 3,200\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# Construct Neural Decoder\n",
    "inputs = tf.keras.Input(shape=(None, 2))\n",
    "outputs = NRSCDecoder(\n",
    "    inputs, \n",
    "    is_training=True, \n",
    "    num_layers=NUM_LAYERS, \n",
    "    hidden_units=NUM_HIDDEN_UNITS, \n",
    "    dropout=DROPOUT_RATE)\n",
    "model = tf.keras.Model(inputs, outputs)\n",
    "\n",
    "# Set up training \n",
    "model.compile('adam', 'binary_crossentropy', [BER])\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "L9zfO9Z9vswz"
   },
   "source": [
    "## Start Training/Eval Pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     },
     "base_uri": "https://localhost:8080/",
     "height": 51
    },
    "colab_type": "code",
    "id": "lLXl8fC9vul5",
    "outputId": "4c63b55a-79d5-4a78-c75a-79a78213c4b2",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "240/240 [==============================] - 325s 1s/step - loss: 0.1186 - BER: 0.0408 - val_loss: 0.2561 - val_BER: 0.0500\n",
      "Epoch 2/100\n",
      "240/240 [==============================] - 312s 1s/step - loss: 0.0313 - BER: 0.0110 - val_loss: 0.0194 - val_BER: 0.0061\n",
      "Epoch 3/100\n",
      "240/240 [==============================] - 312s 1s/step - loss: 0.0163 - BER: 0.0058 - val_loss: 0.0097 - val_BER: 0.0034\n",
      "Epoch 4/100\n",
      "240/240 [==============================] - 313s 1s/step - loss: 0.0113 - BER: 0.0040 - val_loss: 0.0080 - val_BER: 0.0027\n",
      "Epoch 5/100\n",
      "240/240 [==============================] - 312s 1s/step - loss: 0.0094 - BER: 0.0033 - val_loss: 0.0072 - val_BER: 0.0024\n",
      "Epoch 6/100\n",
      "240/240 [==============================] - 311s 1s/step - loss: 0.0084 - BER: 0.0029 - val_loss: 0.0067 - val_BER: 0.0022\n",
      "Epoch 7/100\n",
      "240/240 [==============================] - 311s 1s/step - loss: 0.0078 - BER: 0.0027 - val_loss: 0.0064 - val_BER: 0.0020\n",
      "Epoch 8/100\n",
      "240/240 [==============================] - 311s 1s/step - loss: 0.0073 - BER: 0.0025 - val_loss: 0.0062 - val_BER: 0.0019\n",
      "Epoch 9/100\n",
      "240/240 [==============================] - 312s 1s/step - loss: 0.0071 - BER: 0.0025 - val_loss: 0.0062 - val_BER: 0.0019\n",
      "Epoch 10/100\n",
      "240/240 [==============================] - 316s 1s/step - loss: 0.0068 - BER: 0.0024 - val_loss: 0.0062 - val_BER: 0.0020\n",
      "Epoch 11/100\n",
      "240/240 [==============================] - 316s 1s/step - loss: 0.0066 - BER: 0.0023 - val_loss: 0.0060 - val_BER: 0.0018\n",
      "Epoch 12/100\n",
      "240/240 [==============================] - 314s 1s/step - loss: 0.0064 - BER: 0.0022 - val_loss: 0.0059 - val_BER: 0.0018\n",
      "Epoch 13/100\n",
      "240/240 [==============================] - 315s 1s/step - loss: 0.0064 - BER: 0.0022 - val_loss: 0.0060 - val_BER: 0.0019\n",
      "Epoch 14/100\n",
      "240/240 [==============================] - 312s 1s/step - loss: 0.0061 - BER: 0.0021 - val_loss: 0.0060 - val_BER: 0.0018\n",
      "Epoch 15/100\n",
      "240/240 [==============================] - 312s 1s/step - loss: 0.0061 - BER: 0.0021 - val_loss: 0.0059 - val_BER: 0.0018\n",
      "Epoch 16/100\n",
      "240/240 [==============================] - 312s 1s/step - loss: 0.0060 - BER: 0.0021 - val_loss: 0.0059 - val_BER: 0.0017\n",
      "Epoch 17/100\n",
      "240/240 [==============================] - 311s 1s/step - loss: 0.0060 - BER: 0.0021 - val_loss: 0.0060 - val_BER: 0.0018\n",
      "Epoch 18/100\n",
      "240/240 [==============================] - 332s 1s/step - loss: 0.0059 - BER: 0.0020 - val_loss: 0.0059 - val_BER: 0.0018\n",
      "Epoch 19/100\n",
      "240/240 [==============================] - 338s 1s/step - loss: 0.0058 - BER: 0.0020 - val_loss: 0.0060 - val_BER: 0.0018\n",
      "Epoch 20/100\n",
      "240/240 [==============================] - 339s 1s/step - loss: 0.0058 - BER: 0.0020 - val_loss: 0.0060 - val_BER: 0.0018\n",
      "Epoch 21/100\n",
      "240/240 [==============================] - 334s 1s/step - loss: 0.0057 - BER: 0.0020 - val_loss: 0.0059 - val_BER: 0.0018\n"
     ]
    }
   ],
   "source": [
    "# Set up Data Loader using tf.Dataset\n",
    "train_set = data_genenerator(X_train, Y_train, BATCH_SIZE, shuffle=True)\n",
    "test_set = data_genenerator(X_test, Y_test, BATCH_SIZE, shuffle=False)\n",
    "\n",
    "# Backup best model\n",
    "backup = tf.keras.callbacks.ModelCheckpoint(                     \n",
    "  filepath='BiGRU.hdf5',\n",
    "  monitor='val_loss',\n",
    "  save_best_only=True)\n",
    "    \n",
    "# Stop training early if the model seems to overfit\n",
    "early_stopping = tf.keras.callbacks.EarlyStopping(\n",
    "    monitor='val_loss',\n",
    "    min_delta=0.0,\n",
    "    patience=3,\n",
    "    verbose=0, mode='auto')\n",
    "\n",
    "history = model.fit(\n",
    "    train_set.make_one_shot_iterator(), \n",
    "    steps_per_epoch=len(X_train) //BATCH_SIZE, \n",
    "    validation_data=test_set.make_one_shot_iterator(),\n",
    "    validation_steps= len(X_test) //BATCH_SIZE,\n",
    "    callbacks=[early_stopping, backup],\n",
    "    epochs=100)\n",
    "\n",
    "model = tf.keras.models.load_model('BiGRU.hdf5',{'BER': BER})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     },
     "base_uri": "https://localhost:8080/",
     "height": 387
    },
    "colab_type": "code",
    "executionInfo": {
     "elapsed": 1105,
     "status": "ok",
     "timestamp": 1529874947100,
     "user": {
      "displayName": "Dat Nguyen",
      "photoUrl": "//lh3.googleusercontent.com/-irIcNYd-KIw/AAAAAAAAAAI/AAAAAAAAAEs/NlM8kG6RL4Q/s50-c-k-no/photo.jpg",
      "userId": "108917076199533451784"
     },
     "user_tz": 420
    },
    "id": "UheNmuX9isBo",
    "outputId": "7e6287e3-aab3-4150-cd79-0b2545b27fe4"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfsAAAF3CAYAAACi+eJxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XmcVNWZ//HPU9Ur0CzdoCAYQUAUFLFBXFGijkImUZO4Rlzxx2SiMU7GMUxmRg1J5qVmYmKUSSSKMWpcMUoSDDGJ7W4EEVBEZAkKDLJ0s3Szd9f5/XGqoGiqu6u7q7ruLb7v16teVXXvuVXP6erup567nGPOOURERCR/RXIdgIiIiGSXkr2IiEieU7IXERHJc0r2IiIieU7JXkREJM8p2YuIiOQ5JXsREZE8p2QvIiKS55TsRURE8pySvYiISJ4ryHUAmdK9e3c3aNCgXIeREdu2baNz5865DiMj1JfgyZd+gPoSVPnSlzD04913393onOvVUru8SfaHHnooc+fOzXUYGVFVVcXYsWNzHUZGqC/Bky/9APUlqPKlL2Hoh5l9kk477cYXERHJc0r2IiIieU7JXkREJM/lzTF7ERHJjD179rB69Wp27tzZpu27devG4sWLMxxVxwtSP0pKSujXrx+FhYVt2l7JXkRE9rN69WrKysro378/Ztbq7WtraykrK8tCZB0rKP1wzlFdXc3q1asZMGBAm15Du/FFRGQ/O3fupKKiok2JXjLPzKioqGjznhZQshcRkRSU6IOlvZ+Hkr2IiARKdXU1I0aMYMSIEfTu3Zu+ffvufb579+60XuPaa69lyZIlzbaZOnUqjz/+eCZC5vTTT2f+/PkZea1s0DF7EREJlIqKir2J84477qBLly7ccsst+7VxzuGcIxJJXbM+/PDDLb7PDTfc0P5gQ0KVvYiIhMKyZcsYOnQoV1xxBcOGDWPt2rVMmjSJUaNGMWzYMKZMmbK3baLSrq+vp3v37kyePJnjjz+eU045hfXr1wPwn//5n/z0pz/d237y5MmMHj2aIUOG8OabbwJ+yNyvfvWrDB06lIsuuohRo0alXcHv2LGDq6++muOOO47KykpeffVVAN5//31OPPFERowYwfDhw1mxYgW1tbWMHz+e448/nmOPPZZnn302kz86VfYiItKCVEPGXnIJfOMbsH07fOEL+60qbWiAiRPhmmtg40a46KL9t62qanMoH330Eb/+9a8ZNWoUAHfeeSfl5eXU19fz+c9/nosuuoihQ4fut82WLVs488wzufPOO/n2t7/N9OnTmTx58gGv7ZzjnXfeYebMmUyZMoVnnnmG++67j969ezNjxgwWLFhAZWVl2rH+7Gc/o7i4mPfff59FixbxhS98gaVLl/K///u/3HLLLVx66aXs2rUL5xwvvPAC/fv358UXX9wbcyapsk+hvh5eegmWLs11JCIikmzgwIF7Ez3AE088QWVlJZWVlSxevJgPP/zwgG1KS0sZP348ACNHjmTlypUpX/srX/nKAW1ef/11LrvsMgCOP/54hg0blnasr7/+OhMmTABg2LBhHHbYYSxbtoxTTz2VH/zgB9x9992sWrWKkpIShg8fzh//+EcmT57MG2+8Qbdu3dJ+n3Sosm/CuefC974Ht92W60hERHKsuUq8U6cD1u9Ivj69Z892VfKNJc9Ct3TpUu69917eeecdunfvzoQJE1JenlZUVLT3cTQapb6+PuVrFxcXt9gmE6688kpOOeUU/vCHPzBu3DimT5/OGWecwdy5c5k1axaTJ09m/PjxfPe7383Ye6qyT6GgALp2herqXEciIiJN2bp1K2VlZXTt2pW1a9cye/bsjL/HaaedxtNPPw34Y+2p9hw0ZcyYMXvP9l+8eDFr165l0KBBrFixgkGDBvGtb32LL37xiyxcuJA1a9bQpUsXrrzySv71X/+VefPmZbQfquybUFEBNTW5jkJERJpSWVnJ0KFDOfroozniiCM47bTTMv4e3/zmN7nqqqsYOnTo3ltTu9jPO++8vcPZjhkzhunTp/NP//RPHHfccRQWFvLrX/+aoqIifvOb3/DEE09QWFjIYYcdxh133MGbb77J5MmTiUQiFBUV8Ytf/CKj/TDnXEZfMFeGDBniWrqmsjVGjYJDDoFZszL2kmkLwxzK6VJfgidf+gHqS7YsXryYY445ps3bB2WY2faqra2ltLSU+vp6SkpKWLp0Keeeey5Lly6loKDja+VUn4uZveucG9XEJntlNVozGwfcC0SBB51zdzZa/23geqAe2ABc55z7JL6uAXg/3vRT59z52Yy1MVX2IiJSV1fH2WefTX19Pc45HnjggZwk+vbKWsRmFgWmAv8ArAbmmNlM51zyAY/3gFHO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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Count of the number of epochs\n",
    "epochs = range(1, len(history.history['loss']) + 1)\n",
    "# Visualize loss history\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(epochs, history.history['loss'], 'r--')\n",
    "plt.plot(epochs, history.history['val_loss'], 'b-')\n",
    "plt.legend(['Training Loss', 'Test Loss'])\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Loss')\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "_CsQHyoH4nGO"
   },
   "source": [
    "## Benchmark Neural Decoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     },
     "base_uri": "https://localhost:8080/",
     "height": 36
    },
    "colab_type": "code",
    "executionInfo": {
     "elapsed": 693,
     "status": "ok",
     "timestamp": 1529874948606,
     "user": {
      "displayName": "Dat Nguyen",
      "photoUrl": "//lh3.googleusercontent.com/-irIcNYd-KIw/AAAAAAAAAAI/AAAAAAAAAEs/NlM8kG6RL4Q/s50-c-k-no/photo.jpg",
      "userId": "108917076199533451784"
     },
     "user_tz": 420
    },
    "id": "iteYs2bU5EZx",
    "outputId": "f2736499-7d68-4728-c0fd-a5d9fa3be680"
   },
   "outputs": [],
   "source": [
    "def benchmark_neural_decoder(noisy_inputs, labels):\n",
    "    \n",
    "    # Set up data generator\n",
    "    Y = np.reshape(labels, (-1, BLOCK_LEN, 1))\n",
    "    X = np.reshape(np.array(noisy_inputs)[:, :2*BLOCK_LEN], (-1, BLOCK_LEN, 2))\n",
    "    test_set = data_genenerator(X, Y, BATCH_SIZE, shuffle=False)\n",
    "    \n",
    "    # Make predictions in batch\n",
    "    decoded_bits = model.predict(\n",
    "        test_set.make_one_shot_iterator(), \n",
    "        steps=len(Y) // BATCH_SIZE)\n",
    "    \n",
    "    # Compute hamming distances\n",
    "    original_bits = np.reshape(Y, (-1, BLOCK_LEN)).astype(int)\n",
    "    decoded_bits =  np.reshape(np.round(decoded_bits), (-1, BLOCK_LEN)).astype(int)\n",
    "    hamming_dist = np.not_equal(original_bits, decoded_bits)\n",
    "    \n",
    "    return np.sum(hamming_dist, axis=1)\n",
    "\n",
    "def benchmark_viterbi(message_bits, noisy_bits, sigma):\n",
    "  \n",
    "    # make fair comparison between (100, 204) convolutional code and RNN decoder\n",
    "    # Reference: Author's code\n",
    "    noisy_bits[-2*int(M):] = 0\n",
    "    \n",
    "    # Viterbi Decoder on Conv. Code\n",
    "    decoded_bits = cp.channelcoding.viterbi_decode(\n",
    "        coded_bits=noisy_bits.astype(float), \n",
    "        trellis=trellis,\n",
    "        tb_depth=TRACE_BACK_DEPTH,\n",
    "        decoding_type='unquantized')\n",
    "    \n",
    "    # Number of bit errors (hamming distance)\n",
    "    hamming_dist = cp.utilities.hamming_dist(\n",
    "        message_bits.astype(int),\n",
    "        decoded_bits[:-int(M)])\n",
    "    return hamming_dist\n",
    "\n",
    " \n",
    "# #################################################################\n",
    "# For every SNR_db, we generates new noisy signals\n",
    "# for fair comparision.\n",
    "# #################################################################\n",
    "def generate_noisy_input(message_bits, trellis, sigma):\n",
    "    # Encode message bit\n",
    "    coded_bits = cp.channelcoding.conv_encode(message_bits, trellis)\n",
    "    # Corrupt message on BAWGN Channel\n",
    "    coded_bits = corrupt_signal(coded_bits, noise_type='awgn', sigma=sigma)\n",
    "    return coded_bits, message_bits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "autoexec": {
      "startup": false,
      "wait_interval": 0
     },
     "base_uri": "https://localhost:8080/",
     "height": 216
    },
    "colab_type": "code",
    "executionInfo": {
     "elapsed": 938376,
     "status": "ok",
     "timestamp": 1529875887369,
     "user": {
      "displayName": "Dat Nguyen",
      "photoUrl": "//lh3.googleusercontent.com/-irIcNYd-KIw/AAAAAAAAAAI/AAAAAAAAAEs/NlM8kG6RL4Q/s50-c-k-no/photo.jpg",
      "userId": "108917076199533451784"
     },
     "user_tz": 420
    },
    "id": "gkTTBO0nvxAi",
    "outputId": "eb1b9114-d056-4ec5-c7e8-8a5ba16af9e2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[SNR]=0.00\n",
      "\tNeural Decoder:  [BER]=0.0928970 [BLER]=0.980 -- 7.541s\n",
      "\tViterbi Decoder: [BER]=0.0902850 [BLER]=0.950 -- 43.254s\n",
      "[SNR]=1.00\n",
      "\tNeural Decoder:  [BER]=0.0496670 [BLER]=0.872 -- 7.323s\n",
      "\tViterbi Decoder: [BER]=0.0465870 [BLER]=0.782 -- 42.694s\n",
      "[SNR]=2.00\n",
      "\tNeural Decoder:  [BER]=0.0209220 [BLER]=0.592 -- 7.539s\n",
      "\tViterbi Decoder: [BER]=0.0185180 [BLER]=0.459 -- 44.226s\n",
      "[SNR]=3.00\n",
      "\tNeural Decoder:  [BER]=0.0069500 [BLER]=0.275 -- 7.734s\n",
      "\tViterbi Decoder: [BER]=0.0060010 [BLER]=0.193 -- 44.464s\n",
      "[SNR]=4.00\n",
      "\tNeural Decoder:  [BER]=0.0016990 [BLER]=0.088 -- 7.554s\n",
      "\tViterbi Decoder: [BER]=0.0014460 [BLER]=0.057 -- 44.692s\n",
      "[SNR]=5.00\n",
      "\tNeural Decoder:  [BER]=0.0003770 [BLER]=0.023 -- 7.540s\n",
      "\tViterbi Decoder: [BER]=0.0002990 [BLER]=0.015 -- 43.027s\n",
      "[SNR]=6.00\n",
      "\tNeural Decoder:  [BER]=0.0000640 [BLER]=0.005 -- 7.772s\n",
      "\tViterbi Decoder: [BER]=0.0000420 [BLER]=0.004 -- 44.153s\n",
      "[SNR]=7.00\n",
      "\tNeural Decoder:  [BER]=0.0000200 [BLER]=0.002 -- 7.454s\n",
      "\tViterbi Decoder: [BER]=0.0000160 [BLER]=0.002 -- 42.947s\n"
     ]
    }
   ],
   "source": [
    "viterbiBERs, viterbiBLERs = [], []\n",
    "neuralBERs, neuralBLERs = [], []\n",
    "\n",
    "pool = mp.Pool(processes=mp.cpu_count())\n",
    "labels = np.reshape(Y_test, (-1, BLOCK_LEN)).astype(int)\n",
    "try: \n",
    "    SNRs  = np.linspace(0, 7.0, 8)\n",
    "    for snr in SNRs:\n",
    "        snr_linear = snr + 10 * np.log10(1./2.)\n",
    "        sigma = np.sqrt(1. / (2. * 10 **(snr_linear / 10.)))\n",
    "        print('[SNR]={:.2f}'.format(snr))\n",
    "        \n",
    "        # Generates new noisy signals\n",
    "        result = pool.starmap(\n",
    "            func=generate_noisy_input,  \n",
    "            iterable=[(msg_bits, trellis, sigma) for msg_bits in labels])\n",
    "        \n",
    "        X, Y =  zip(*result)\n",
    "        \n",
    "        # #################################################################\n",
    "        # BENCHMARK NEURAL DECODER \n",
    "        # #################################################################\n",
    "        nn_start = time.time()\n",
    "        hamm_dists = benchmark_neural_decoder(X, Y)\n",
    "        \n",
    "        nn_ber = sum(hamm_dists) / np.product(np.shape(Y))\n",
    "        nn_bler = np.count_nonzero(hamm_dists) / len(Y)\n",
    "\n",
    "        neuralBERs.append(nn_ber)\n",
    "        neuralBLERs.append(nn_bler)            \n",
    "        print('\\tNeural Decoder:  [BER]={:5.7f} [BLER]={:5.3f} -- {:3.3f}s'.format(\n",
    "            nn_ber, nn_bler, time.time() - nn_start)) \n",
    "\n",
    "        # #################################################################\n",
    "        # BENCHMARK VITERBI DECODER \n",
    "        # #################################################################\n",
    "        vi_start = time.time()\n",
    "        hamm_dists = pool.starmap(benchmark_viterbi, [(y, x, sigma) for x, y in zip(X, Y)])\n",
    "        \n",
    "        ber = sum(hamm_dists) / np.product(np.shape(Y))\n",
    "        bler = np.count_nonzero(hamm_dists) / len(Y)\n",
    "        \n",
    "        viterbiBERs.append(ber)\n",
    "        viterbiBLERs.append(bler)\n",
    "        print('\\tViterbi Decoder: [BER]={:5.7f} [BLER]={:5.3f} -- {:3.3f}s'.format(\n",
    "              ber, bler, time.time() - vi_start))\n",
    "        \n",
    "except Exception as e:\n",
    "    print(e)\n",
    "finally:\n",
    "    pool.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "T0cL-ORChXne"
   },
   "source": [
    "# Result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x504 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ###################################\n",
    "# Plot Bit Error Rate (BER) Curve\n",
    "# ###################################\n",
    "plt.figure(figsize=(18, 7))\n",
    "\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.title('Block Length = 100 || Data rate = 1/2', fontsize=14)\n",
    "\n",
    "plt.semilogy(SNRs, neuralBERs, '-vr')\n",
    "plt.semilogy(SNRs, viterbiBERs, 's--')\n",
    "plt.legend(['N-RSC (SNR_train=0 dB)', 'Viterbi'], fontsize=16)\n",
    "plt.xlabel('SNR', fontsize=16)\n",
    "plt.xlim(xmin=SNRs[0], xmax=SNRs[-1])  # this line\n",
    "plt.ylabel('BER', fontsize=16)\n",
    "plt.grid(True, which='both')\n",
    "\n",
    "# ###################################\n",
    "# Plot Block Error Rate (BLER) Curve\n",
    "# ###################################\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.title('Block Length = 100 || Data rate = 1/2', fontsize=14)\n",
    "\n",
    "plt.semilogy(SNRs, neuralBLERs, '-vr')\n",
    "plt.semilogy(SNRs, viterbiBLERs, 's--')\n",
    "plt.ylabel('BLER', fontsize=16)\n",
    "plt.xlabel('SNR', fontsize=16)\n",
    "plt.legend(['N-RSC (SNR_train=0 dB)', 'Viterbi'], fontsize=16)\n",
    "\n",
    "plt.xlim(xmin=SNRs[0], xmax=SNRs[-1])  # this line\n",
    "plt.grid(True, which='both')\n",
    "plt.savefig('result_bler_block_length_100_snr0.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  Benchmark on K = 1000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "_, Y_test = create_dataset(NUM_TESTING_DATA, 1000, trellis, snr=0.0, seed=1111)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[SNR]=0.00\n",
      "\tNeural Decoder:  [BER]=0.0931144 [BLER]=0.981 -- 56.054s\n",
      "\tViterbi Decoder: [BER]=0.0907984 [BLER]=0.954 -- 446.294s\n",
      "[SNR]=1.00\n",
      "\tNeural Decoder:  [BER]=0.0499680 [BLER]=0.873 -- 59.721s\n",
      "\tViterbi Decoder: [BER]=0.0468444 [BLER]=0.784 -- 441.516s\n",
      "[SNR]=2.00\n",
      "\tNeural Decoder:  [BER]=0.0210792 [BLER]=0.599 -- 60.302s\n",
      "\tViterbi Decoder: [BER]=0.0188768 [BLER]=0.470 -- 449.163s\n",
      "[SNR]=3.00\n",
      "\tNeural Decoder:  [BER]=0.0069396 [BLER]=0.276 -- 60.664s\n",
      "\tViterbi Decoder: [BER]=0.0058972 [BLER]=0.190 -- 435.181s\n",
      "[SNR]=4.00\n",
      "\tNeural Decoder:  [BER]=0.0017248 [BLER]=0.086 -- 59.645s\n",
      "\tViterbi Decoder: [BER]=0.0014656 [BLER]=0.057 -- 429.923s\n",
      "[SNR]=5.00\n",
      "\tNeural Decoder:  [BER]=0.0003452 [BLER]=0.021 -- 60.855s\n",
      "\tViterbi Decoder: [BER]=0.0002768 [BLER]=0.014 -- 430.217s\n",
      "[SNR]=6.00\n",
      "\tNeural Decoder:  [BER]=0.0000712 [BLER]=0.005 -- 61.211s\n",
      "\tViterbi Decoder: [BER]=0.0000636 [BLER]=0.005 -- 428.800s\n",
      "[SNR]=7.00\n",
      "\tNeural Decoder:  [BER]=0.0000100 [BLER]=0.001 -- 62.455s\n",
      "\tViterbi Decoder: [BER]=0.0000052 [BLER]=0.001 -- 427.411s\n"
     ]
    }
   ],
   "source": [
    "viterbiBERs, viterbiBLERs = [], []\n",
    "neuralBERs, neuralBLERs = [], []\n",
    "\n",
    "pool = mp.Pool(processes=mp.cpu_count())\n",
    "labels = np.reshape(Y_test, (-1, BLOCK_LEN)).astype(int)\n",
    "try: \n",
    "    SNRs  = np.linspace(0, 7.0, 8)\n",
    "    for snr in SNRs:\n",
    "        snr_linear = snr + 10 * np.log10(1./2.)\n",
    "        sigma = np.sqrt(1. / (2. * 10 **(snr_linear / 10.)))\n",
    "        print('[SNR]={:.2f}'.format(snr))\n",
    "        \n",
    "        # Generates new noisy signals\n",
    "        result = pool.starmap(\n",
    "            func=generate_noisy_input,  \n",
    "            iterable=[(msg_bits, trellis, sigma) for msg_bits in labels])\n",
    "        \n",
    "        X, Y =  zip(*result)\n",
    "        \n",
    "        # #################################################################\n",
    "        # BENCHMARK NEURAL DECODER \n",
    "        # #################################################################\n",
    "        nn_start = time.time()\n",
    "        hamm_dists = benchmark_neural_decoder(X, Y)\n",
    "        \n",
    "        nn_ber = sum(hamm_dists) / np.product(np.shape(Y))\n",
    "        nn_bler = np.count_nonzero(hamm_dists) / len(Y)\n",
    "\n",
    "        neuralBERs.append(nn_ber)\n",
    "        neuralBLERs.append(nn_bler)            \n",
    "        print('\\tNeural Decoder:  [BER]={:5.7f} [BLER]={:5.3f} -- {:3.3f}s'.format(\n",
    "            nn_ber, nn_bler, time.time() - nn_start)) \n",
    "\n",
    "        # #################################################################\n",
    "        # BENCHMARK VITERBI DECODER \n",
    "        # #################################################################\n",
    "        vi_start = time.time()\n",
    "        hamm_dists = pool.starmap(benchmark_viterbi, [(y, x, sigma) for x, y in zip(X, Y)])\n",
    "        \n",
    "        ber = sum(hamm_dists) / np.product(np.shape(Y))\n",
    "        bler = np.count_nonzero(hamm_dists) / len(Y)\n",
    "        \n",
    "        viterbiBERs.append(ber)\n",
    "        viterbiBLERs.append(bler)\n",
    "        print('\\tViterbi Decoder: [BER]={:5.7f} [BLER]={:5.3f} -- {:3.3f}s'.format(\n",
    "              ber, bler, time.time() - vi_start))\n",
    "        \n",
    "except Exception as e:\n",
    "    print(e)\n",
    "finally:\n",
    "    pool.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x504 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ###################################\n",
    "# Plot Bit Error Rate (BER) Curve\n",
    "# ###################################\n",
    "plt.figure(figsize=(18, 7))\n",
    "\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.title('Block Length = 100 || Data rate = 1/2', fontsize=14)\n",
    "\n",
    "plt.semilogy(SNRs, neuralBERs, '-vr')\n",
    "plt.semilogy(SNRs, viterbiBERs, 's--')\n",
    "plt.legend(['N-RSC (SNR_train=0 dB)', 'Viterbi'], fontsize=16)\n",
    "plt.xlabel('SNR', fontsize=16)\n",
    "plt.xlim(xmin=SNRs[0], xmax=SNRs[-1])  # this line\n",
    "plt.ylabel('BER', fontsize=16)\n",
    "plt.grid(True, which='both')\n",
    "\n",
    "# ###################################\n",
    "# Plot Block Error Rate (BLER) Curve\n",
    "# ###################################\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.title('Block Length = 100 || Data rate = 1/2', fontsize=14)\n",
    "\n",
    "plt.semilogy(SNRs, neuralBLERs, '-vr')\n",
    "plt.semilogy(SNRs, viterbiBLERs, 's--')\n",
    "plt.ylabel('BLER', fontsize=16)\n",
    "plt.xlabel('SNR', fontsize=16)\n",
    "plt.legend(['N-RSC (SNR_train=0 dB)', 'Viterbi'], fontsize=16)\n",
    "\n",
    "plt.xlim(xmin=SNRs[0], xmax=SNRs[-1])  # this line\n",
    "plt.grid(True, which='both')\n",
    "plt.savefig('result_bler_block_length_1000_snr0.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "default_view": {},
   "name": "train_neural_decoder.ipynb",
   "provenance": [],
   "version": "0.3.2",
   "views": {}
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
